package com.sayimo.maker.mall.orders.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.sayimo.framework.exception.DaoException;
import com.sayimo.framework.exception.ServiceException;
import com.sayimo.maker.mall.orders.vo.OrdersGoodsInfo;



/**
 * @Copyright (c) 2016 广东省尚一互联网有限公司
 * @Project: schoolmallapi
 * @ClassName: OrdersGoodsInfoInterfaceDao
 * @Description: 订单商品Dao
 * @Author: 王瑞清
 * @Date: 日期：2016年1月4日 时间：下午3:20:00
 * @Version 1.0.0
 */
public interface OrdersGoodsInfoInterfaceDao {

	/**
	 * @Title: insertOrdersGoodsInfo
	 * @Author: 王瑞清
	 * @Date:日期：2016年1月4日 时间：下午4:06:34
	 * @Description: 新增订单商品
	 * @param ordersGoodsInfo
	 * @throws DaoException
	 * @return Integer
	 * @Version 1.0.0
	 */
	public Integer insertOrdersGoodsInfo(OrdersGoodsInfo ordersGoodsInfo) throws DaoException;

	/**
	 * 
	 * @MethodName queryOrdersGoodsInfosByOrdersId
	 * @Description 获取订单下所有商品
	 * 
	 * @author chenpy
	 * @date 2016年1月13日 下午2:30:44
	 * @param
	 * @return List<OrdersGoodsInfo>
	 * @VERSION 1.0.0
	 */
	@SuppressWarnings("rawtypes")
	public List queryOrdersGoodsInfosByBatchCode(String batchCode) throws DaoException;

	/**
	 * @Title: queryOrdersGoodsInfoById
	 * @Author: 王瑞清
	 * @Date:日期：2016年1月14日 时间：上午10:41:50
	 * @Description: 按ID查询
	 * @param id
	 * @throws DaoException
	 * @return List<OrdersGoodsInfo>
	 * @Version 1.0.0
	 */
	public OrdersGoodsInfo queryOrdersGoodsInfoById(Integer id) throws DaoException;
	
	/**
	 * 
	* @Title: queryOrdersGoodsInfoByOrderId 
	* @Description: 查询订单下商品信息
	* @param orderId
	* @return
	* @throws DaoException
	* @return List
	* @throws
	 */
	public List queryOrdersGoodsInfoByOrderId(Integer orderId)throws DaoException;
	
	public Integer updateOrderGoodsInfo(OrdersGoodsInfo goodsInfo) throws DaoException;
	
	public List<OrdersGoodsInfo> queryOrdersGoodsInfoByOrdersId(Integer ordersId) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.order.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 查询商品是否支持发货到指定地址
	  * @param 
	  * @throws ServiceException
	  * @return Map
	  * @date 2016年5月13日
	  */ 
	public Map queryGoodsLogist(Map<String, Object> param) throws DaoException;
	
	public BigDecimal  getLogisticsCostByAreaCode(String areaCode,Integer goodsId,Integer logisticsCostId, Integer buyNum) throws DaoException;
	
	/**
	 * 
	* @Title: queryGoodsInfoByOrderId 
	* @Author: 田超
	* @Date:日期：2016年6月14日  时间：上午11:35:21
	* @Description: 根据订单id获取相应的商品信息,providerId和skuCode
	* @param orderId
	* @return
	* @throws DaoException
	* @return List
	* @Version 1.0.0
	 */
	public List queryGoodsInfoByOrderId(Integer orderId) throws DaoException;
	
	/**
	 * 
	* @Title: updateGoodsStatus 
	* @Author: 田超
	* @Date:日期：2016年6月17日  时间：下午3:07:17
	* @Description: 更新商品的
	* @param paramMap
	* @return
	* @throws DaoException
	* @return Integer
	* @Version 1.0.0
	 */
	public Integer updateGoodsStatus(Map<String, Object> paramMap) throws DaoException;
	
	/**
	 * 
	* @Title: queryCountByOrderId 
	* @Author: 田超
	* @Date:日期：2016年6月17日  时间：下午3:09:49
	* @Description: 根据订单号查询订单商品的个数
	* @param orderId
	* @return
	* @throws DaoException
	* @return Integer
	* @Version 1.0.0
	 */
	public Integer queryCountByOrderId(Integer orderId) throws DaoException;
	
	/**
	 * 
	* @Title: queryCountByStatus 
	* @Author: 田超
	* @Date:日期：2016年6月17日  时间：下午3:11:56
	* @Description: 根据状态查询订单下商品的个数
	* @param paramMap
	* @return
	* @throws DaoException
	* @return Integer
	* @Version 1.0.0
	 */
	public Integer queryCountByStatus(Map<String,Object> paramMap) throws DaoException;
	
	/**
	 * 
	* @Title: queryInfoByOrderId 
	* @Author: 田超
	* @Date:日期：2016年7月4日  时间：下午4:26:01
	* @Description: 根据订单id获取相关信息
	* @param orderId
	* @return
	* @throws DaoException
	* @return List
	* @Version 1.0.0
	 */
	public List queryInfoByOrderId(Integer orderId) throws DaoException;

	/** 
	* @Title: insertProviderOrderGoodsInfo 
	* @Description: 
	* @param goodsInfo
	* @return
	* @return int
	* @throws 
	*/ 
	public void insertProviderOrderGoodsInfo(OrdersGoodsInfo goodsInfo)throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.order.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 查询订单的总金额（没有运费 ）
	  * @param 
	  * @throws 
	  * @return BigDecimal
	  * @date 2016年7月26日
	  */ 
	public BigDecimal getOrdersTotalAmount(Map<String, Object> paramMap) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.order.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 查询按件收费的商品的运费最大值
	  * @param 
	  * @throws 
	  * @return Map
	  * @date 2016年7月26日
	  */ 
	public Map getLogisticsGoodsId(Map<String, Object> paramMap) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.order.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 批量修改订单商品信息
	  * @param 
	  * @throws 
	  * @return Integer
	  * @date 2016年7月27日
	  */ 
	public Integer batchUpdateOrdersGoodsInfos(List goodsInfos) throws DaoException;
	
	public Map<String,Object> getPriceByProviderId(Integer providerId) throws DaoException;
}
